package com.nantong.admin.service;

import java.util.List;

import com.baomidou.mybatisplus.extension.service.IService;
import com.nantong.admin.domain.Quote;
import com.nantong.admin.domain.model.request.quote.QuoteCreateRequest;
import com.nantong.admin.domain.model.request.quote.QuoteSearch;
import com.nantong.admin.domain.model.response.quote.QuoteVo;
import com.nantong.common.mybatis.core.page.PageQuery;
import com.nantong.common.mybatis.core.page.TableDataInfo;

/**
 * 报价单Service接口
 */
public interface IQuoteService extends IService<Quote> {
    /**
     * 分页查询报价单列表
     *
     * @param quoteSearch 报价单查询条件
     * @param pageQuery   分页参数
     * @return 报价单分页列表
     */
    TableDataInfo<QuoteVo> selectPageList(QuoteSearch quoteSearch, PageQuery pageQuery);

    /**
     * 查询报价单列表
     *
     * @param quoteSearch 报价单查询条件
     * @return 报价单列表
     */
    List<QuoteVo> searchList(QuoteSearch quoteSearch);

    /**
     * 根据ID查询报价单详情
     *
     * @param quoteId 报价单ID
     * @return 报价单详情
     */
    QuoteVo selectQuoteById(Long quoteId);

    /**
     * 新增报价单
     *
     * @param quoteCreateRequest 报价单信息
     * @return 结果
     */
    int insertQuote(QuoteCreateRequest quoteCreateRequest);

    /**
     * 修改报价单
     *
     * @param quoteCreateRequest 报价单信息
     * @return 结果
     */
    int updateQuote(QuoteCreateRequest quoteCreateRequest);

    /**
     * 删除报价单信息
     *
     * @param quoteId 报价单ID
     * @return 结果
     */
    int deleteQuoteById(Long quoteId);

    /**
     * 根据客户ID查询报价单列表
     *
     * @param customerId 客户ID
     * @return 报价单列表
     */
    List<QuoteVo> selectQuotesByCustomerId(Long customerId);

    /**
     * 生成报价单号
     *
     * @return 报价单号
     */
    String generateQuoteNo();
    
    /**
     * 更新报价单状态
     *
     * @param quoteId 报价单ID
     * @param status 状态
     * @return 结果
     */
    int updateQuoteStatus(Long quoteId, Integer status);

}